// Copyright (C) 2019 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

// 导入必需的模块
//! [import]
import QtQuick
import QtQuick3D
import BallManager 1.0
//! [import]

// 创建一个窗口对象
Window {
    id: window
    // 设置窗口的宽度和高度
    width: 1024
    height:768

    // 设置窗口为可见状态
    visible: true

    // 创建一个3D视图
    View3D {
        id: view3D
        // 填充整个父窗口
        anchors.fill: parent
        antialiasing: true //启用多重采样抗锯齿

        // 配置场景环境属性
        //! [environment]
          environment: SceneEnvironment {
            // 设置清除颜色（背景色）
            clearColor: "Azure"
            // 背景模式设置为颜色模式
            backgroundMode: SceneEnvironment.Color
        }
        //! [environment]

        // 配置透视相机
        //! [camera]
        PerspectiveCamera {
        //OrthographicCamera{
            // 相机的位置
            //position: Qt.vector3d(0, 0, 800)
            position: ballManager.camara_position
            eulerRotation:ballManager.camara_rotation
            // 相机的角度旋转
            //eulerRotation.x: 6
            //eulerRotation.y: 0
            //eulerRotation.z: 0
            fieldOfView: 90
        }
        //! [camera]

        // 添加方向光
        //! [light]
        DirectionalLight {
            // 光源的角度旋转
            eulerRotation.x: -30
            eulerRotation.y: -70
        }
        //! [light]

        // 定义3D场景中的物体
        //! [objects]
        Model {
            // 左上角的方块
            id:ltBox
            position: Qt.vector3d(-600, 320, 0)
            source: "#Cube"
            scale: Qt.vector3d(1, 1, 0.01)
            materials: [ DefaultMaterial {
                    // 设置漫反射颜色
                    diffuseColor: "Black"
                }
            ]
        }

        Model {
            // 右上角的方块
            id:rtBox
            position: Qt.vector3d(600, 320, 0)
            source: "#Cube"
            scale: Qt.vector3d(1, 1, 0.01)
            materials: [ DefaultMaterial {
                    // 设置漫反射颜色
                    diffuseColor: "Black"
                }
            ]
        }

        Model {
            // 左下角的方块
            id:lbBox
            position: Qt.vector3d(-600, -320, 0)
            source: "#Cube"
            scale: Qt.vector3d(1, 1, 0.01)
            materials: [ DefaultMaterial {
                    // 设置漫反射颜色
                    diffuseColor: "Black"
                }
            ]
        }

        Model {
            // 右下角的方块
            id:rbBox
            position: Qt.vector3d(600, -320, 0)
            source: "#Cube"
            scale: Qt.vector3d(0.5, 0.5, 0.01)
            materials: [ DefaultMaterial {
                    // 设置漫反射颜色
                    diffuseColor: "Black"
                }
            ]
        }

        // 模型，一个球体
        Model {
            // 物体的位置
            id:blueBall
            //position: Qt.vector3d(0, 150, 0)
            // 物体的模型来源
            source: "#Sphere"

            scale: Qt.vector3d(1,1,0.3)
            // 设置材质 设置漫反射颜色
            materials: [ DefaultMaterial {diffuseColor: "blue"}]

            position: ballManager.position
        }

        Connections {
            target: ballManager	// 已注册的C++中的对象名字

            // 槽函数 on + C++的信号名称（首字母大写）
            function onPositionChanged() {
                blueBall.position = ballManager.position;
                //console.log("Position changed to: ", ballManager.position);
            }
        }

        //! [objects]
    }

}
